package com.dragon.modules.yuegou.service.message;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dragon.common.web.PageRequest;
import com.dragon.modules.yuegou.entity.message.MessageEntity;
import com.dragon.modules.yuegou.enums.MsgType;
import com.dragon.modules.yuegou.enums.Platform;
import com.dragon.modules.yuegou.enums.message.MessageChannel;
import com.dragon.modules.yuegou.model.message.Dialog;
import com.dragon.modules.yuegou.model.message.Message;
import com.dragon.modules.yuegou.query.message.MessageQuery;

import java.util.List;

/**
 * 消息 服务接口
 *
 * @author pbuilder generated
 * @date 2019-04-18 11:24:16
 * @version 2.0
 */
public interface MessageService extends IService<MessageEntity> {

	/**
	 *  判断是否有未读消息 false 没有未读消息 true 有未读消息
	 * @param userId
	 * @return
	 */
	boolean isReachedMessage(String userId);


	/**
	 * 分页读取系统消息
	 * @param fromType
	 * @param toUser
	 * @return
	 */
	List<Message> messageRecord(Integer fromType, String toUser);

	IPage<Message> messageRecord(PageRequest page, MessageQuery query);

	/**
	 * 系统未读消息统计
	 * @param toUser
	 * @return
	 */
	Message noread(String toUser);
	/**
	 * 读取消息
	 * @param messageId
	 * @return
	 */
	Message messageInfo(String messageId);


	/**
	 * 查询系统消息
	 * */
	IPage<Message> systemMsg(PageRequest page,String memberId,String toId);

	/**
	 * 查询会员对话
	 * */
	IPage<Message> dialogueMsg(PageRequest page,String fromId,String toId);

	/**
	 * 查询会员对话(未删除消息的)
	 * */
	IPage<Message> dialogueMsgNotDel(PageRequest page, String fromId,String toId);

	/**
	 * 发送消息
	 * */
	void messageReply(Platform platform, String toId, String content, MessageChannel messageChannel, MsgType msgType,String fromUser);

	/**
	 * 商户消息-首页轮询
	 * @param merchantId
	 * @return
	 */
	List<Message> turnList(String merchantId);

	/***
	 * 删除会员的聊天
	 * @param fromId
	 * @param toId
	 */
	void delInfo(String fromId, String toId);

	/**
	 * 是否有新消息
	 * @param busdId
	 * @param memberId
	 * @return
	 */
    Boolean setHasNewMessage(String busdId, String memberId);
}